package 二级缓存;

/**
 * @author: wh(1835734390 @ qq.com)
 * @date: 2023/8/15 16:46
 * @description:
 * @version:
 */

/**
 * 目前给出的示例代码中的二级缓存并没有实现线程安全。如果多个线程同时对缓存进行读写操作，可能会导致数据不一致或其他线程安全问题。
 * 要使二级缓存具备线程安全性，可以使用线程安全的数据结构或添加适当的同步机制来确保并发访问的一致性。
 */
public class CacheExample {
    public static void main(String[] args) {
            int firstLevelMaxCapacity = 100; // 一级缓存最大容量
            Cache firstLevelCache = new FirstLevelCache(firstLevelMaxCapacity);
            /**
             * 二级缓存应该使用的是自定义的数据源，这里明白就好。
             */
            Cache persistentCache = new FirstLevelCache(firstLevelMaxCapacity);

            int secondLevelMaxCapacity = 1000; // 二级缓存最大容量
            Cache secondLevelCache = new SecondLevelCache(firstLevelCache, persistentCache , secondLevelMaxCapacity);

            long expirationTime = 60 * 1000; // 缓存过期时间，60秒
            secondLevelCache.put("key1", "value1", expirationTime);
            Object value = secondLevelCache.get("key1");
            System.out.println(value); // 输出: value1

            secondLevelCache.remove("key1");
            value = secondLevelCache.get("key1");
            System.out.println(value); // 输出: null
    }
}
